A memory debugger is a debugger for finding software memory problems such as and . These are due to Software bug related to the allocation and deallocation of dynamic memory. Programs written in languages that have garbage collection, such as managed code, might also need memory debuggers, e.g. for memory leaks due to "living" references in collections.
Finding memory issues such as leaks can be extremely time-consuming as they may not manifest themselves except under certain conditions. Using a tool to detect memory misuse makes the process much faster and easier.
As abnormally high memory utilization can be a contributing factor in software aging, memory debuggers can help programmers to avoid software anomaly that would exhaust the computer system memory, thus ensuring high reliability of the software even for long runtimes.
AddressSanitizer | Linux, Mac OS | Free/open source (LLVM) | C, C++, Rust | Compile-time instrumentation (available in Clang and GCC) and specialized library |
Allinea DDT | Linux, Blue Gene | commercial | C, C++ and F90. Also for parallel programs on supercomputers | Runtime - through dynamic linking |
AQtime | Windows (Visual Studio, Embarcadero IDEs) | commercial | .NET, C++, Java, Silverlight, JScript, VBScript | Runtime |
Bcheck | Solaris | |||
BoundsChecker | Windows (Visual Studio) | commercial | C++ | Runtime intercepts or compile-time |
Daikon | Unix, Windows, Mac OS X | Free/open source | Java, C/C++, Perl, and Eiffel | Runtime dynamic invariant detection |
Debug_new | (general technique) | (general technique) | C++ | Compile-time override |
Deleaker | Windows (standalone, and plugins for Visual Studio, RAD Studio, Qt Creator, CLion) | commercial | C++, .Net, Delphi | Runtime intercepts |
dmalloc | Free/open source (ISC License) | C | Compile-time override | |
Android, Linux, Windows | Free/open source (LGPL and BSD) | Runtime intercepts | ||
Electric Fence | Unix | C, C++ | Compile-time override | |
FASTMM4 | Windows | Delphi | Compile-time override | |
IBM Rational Purify | Unix, Windows | commercial | C++, Java, .NET | Runtime |
Insure++ | Windows (Visual Studio plugin), Unix | commercial | C, C++ | source code instrumentation |
Intel Inspector | Windows (Visual Studio), Linux | commercial | C, C++, Fortran | Runtime |
libcwd | Linux (gcc) | Free/open source | C, C++ | Compile-time override |
libumem | Solaris | Bundled with Solaris | Link-time override | |
Memwatch | (programming library) | Free/open source | C | Compile-time override |
mtrace | GNU C library | Built-in, outputs accesses | ||
MTuner | C, C++ | Runtime intercepts, Link-time override (MSVC, Clang and GCC), Leak detection | ||
Oracle Solaris Studio (formerly Sun Studio Runtime Checking) | Linux, Solaris | Proprietary freeware | C, C++, Fortran | |
OLIVER (APT international) | MVS, MVS/EXA, DOS/VSE | software | IBM Assembler | Runtime intercepts, Hypervisor - Type 2 |
TotalView | Unix, Mac OS X | commercial | C, C++, Fortran | Runtime |
Linux, FreeBSD, Solaris/illumos, Mac OS, Android | Runtime intercepts | |||
WinDbg | Windows | freeware | C, C++, .NET, Python | Runtime |
|
|